1. Field of the Invention
One or more aspects of the invention generally relate to serial data transfers using the serial ATA (SATA) protocol, and more particularly to throttling data transfer rates to minimize the use of HOLD primitives for flow control.
2. Description of the Related Art
The SATA disk access protocol is used to transfer data between system memory and one or more disks. Most SATA storage devices have very limited data transfer throughput compared with the system memory bandwidth. For magnetic platter based drives, the sustained write throughput may be as low as 100 MB/sec. Consequently, these SATA storage devices may become performance bottlenecks when coupled to a fast host processor that can sustain a transfer rate of 300 MB/sec, as described by the SATA specification.
A flow control mechanism is specified by the SATA protocol in order to throttle the data transfer rate. In particular, the data transfers from the host processor to the SATA storage devices may be throttled so that the receive data first-in first-out (FIFO) does not overflow. When a high water mark in a data FIFO that stores the incoming data is reached, the SATA storage device outputs HOLD primitives. When the host processor receives the HOLD primitives, it outputs HOLDA primitives and stops sending data to the SATA storage device, acknowledging that the HOLD primitives have been received. The SATA storage device may resume accepting data after the HOLDA primitives are received and when space is available in the data FIFO to store incoming data, i.e., when a low water mark is reached. The SATA storage device communicates that it is accepting data by outputting R_IP primitives instead of HOLD primitives. When the host processor receives the R_IP primitives, it starts sending data instead of HOLDA primitives.
Over time, the effective transfer rate is the sustained data transfer rate of the SATA storage device, minus the flow control overhead of the R_IP to HOLD to HOLDA to R_IP sequence. The flow control introduces inefficiency since several cycles of latency (limited to a specified maximum) is incurred for each transfer between the SATA storage device and the host device due to the round-trip handshake across the SATA interface. Simply increasing the size of the data FIFO to store more incoming data may be used to delay the first occurrence of the flow control sequence, but does not improve the effective transfer rate once the data FIFO has filled for the first time.
Accordingly, it is desirable to improve the effective data transfer rate for SATA storage devices. It is also desirable to minimize the die area by not increasing the size of the data FIFO.